home *** CD-ROM | disk | FTP | other *** search
/ Animation How-To / Animation How-to CD.iso / PLY / CHAPTER2 / BOLITA / BOLITA1A.PI < prev    next >
Text File  |  1994-01-01  |  4KB  |  156 lines

  1. // Bumping line o' balls
  2.  
  3. start_frame 0
  4. end_frame 179
  5. total_frames 180
  6.  
  7. outfile balls
  8.  
  9. include "\ply\colors.inc"
  10.  
  11. // Set up background color & lights
  12. background Navyblue
  13. light <10, 10, -20>
  14. light <-10, 10, -20>
  15. light <0, 20, 0>
  16.  
  17.  
  18. // Set up the camera
  19. viewpoint {
  20.    from <11, 15,-20>
  21.    at   <0, 4, 0>
  22.    up   <0, 1, 0>
  23.    angle 30
  24.    resolution 320,200
  25.    aspect 1.43
  26.    }
  27.  
  28.  
  29. define pi 3.14159
  30. define rad pi / 180
  31.  
  32. if (frame==start_frame) {
  33.    static define t 0
  34.    static define moving 1
  35. }
  36.  
  37. define phz 30 * sin(t * rad)
  38. define ang 270 + phz
  39.  
  40. // sorry for the clutter
  41.  
  42. // ball 1
  43.  
  44.    if (phz > 0 && 1 > (5 - moving)) {
  45.       define x1 8 * cos(ang * rad) + 1 * 2 - 6
  46.       define y1 8 * sin(ang * rad) + 8
  47.    }
  48.    else {
  49.       define x1 1 * 2 - 6
  50.       define y1 0
  51.    }
  52.    
  53.    if (phz < 0 && 1 < (moving + 1)) {
  54.       define x1 8 * cos(ang * rad) + 1 * 2 - 6
  55.       define y1 8 * sin(ang * rad) + 8
  56.    }
  57.  
  58. // ball 2
  59.  
  60.    if (phz > 0 && 2 > (5 - moving)) {
  61.       define x2 8 * cos(ang * rad) + 2 * 2 - 6
  62.       define y2 8 * sin(ang * rad) + 8
  63.    }
  64.    else {
  65.       define x2 2 * 2 - 6
  66.       define y2 0
  67.    }
  68.    
  69.    if (phz < 0 && 2 < (moving + 1)) {
  70.       define x2 8 * cos(ang * rad) + 2 * 2 - 6
  71.       define y2 8 * sin(ang * rad) + 8
  72.    }
  73.    
  74. // ball 3
  75.  
  76.    if (phz > 0 && 3 > (5 - moving)) {
  77.       define x3 8 * cos(ang * rad) + 3 * 2 - 6
  78.       define y3 8 * sin(ang * rad) + 8
  79.    }
  80.    else {
  81.       define x3 3 * 2 - 6
  82.       define y3 0
  83.    }
  84.    
  85.    if (phz < 0 && 3 < (moving + 1)) {
  86.       define x3 8 * cos(ang * rad) + 3 * 2 - 6
  87.       define y3 8 * sin(ang * rad) + 8
  88.    }
  89.    
  90. // ball 4
  91.  
  92.    if (phz > 0 && 4 > (5 - moving)) {
  93.       define x4 8 * cos(ang * rad) + 4 * 2 - 6
  94.       define y4 8 * sin(ang * rad) + 8
  95.    }
  96.    else {
  97.       define x4 4 * 2 - 6
  98.       define y4 0
  99.    }
  100.    
  101.    if (phz < 0 && 4 < (moving + 1)) {
  102.       define x4 8 * cos(ang * rad) + 4 * 2 - 6
  103.       define y4 8 * sin(ang * rad) + 8
  104.    }
  105.    
  106. // ball 5
  107.    
  108.    if (phz > 0 && 5 > (5 - moving)) {
  109.       define x5 8 * cos(ang * rad) + 5 * 2 - 6
  110.       define y5 8 * sin(ang * rad) + 8
  111.    }
  112.    else {
  113.       define x5 5 * 2 - 6
  114.       define y5 0
  115.    }
  116.    
  117.    if (phz < 0 && 5 < (moving + 1)) {
  118.       define x5 8 * cos(ang * rad) + 5 * 2 - 6
  119.       define y5 8 * sin(ang * rad) + 8
  120.    }
  121.  
  122.    define z 0
  123.  
  124.    object { sphere <x1,y1,z>,1 shiny_blue }
  125.    object { sphere <x2,y2,z>,1 shiny_blue }
  126.    object { sphere <x3,y3,z>,1 shiny_blue }
  127.    object { sphere <x4,y4,z>,1 shiny_blue }
  128.    object { sphere <x5,y5,z>,1 shiny_blue }
  129.  
  130.    object { cylinder <x1,y1+1,z>,<1*2-6,8,-3>,0.05 shiny_orange }
  131.    object { cylinder <x2,y2+1,z>,<2*2-6,8,-3>,0.05 shiny_orange }
  132.    object { cylinder <x3,y3+1,z>,<3*2-6,8,-3>,0.05 shiny_orange }
  133.    object { cylinder <x4,y4+1,z>,<4*2-6,8,-3>,0.05 shiny_orange }
  134.    object { cylinder <x5,y5+1,z>,<5*2-6,8,-3>,0.05 shiny_orange }
  135.  
  136.    object { cylinder <x1,y1+1,z>,<1*2-6,8,3>,0.05 shiny_orange }
  137.    object { cylinder <x2,y2+1,z>,<2*2-6,8,3>,0.05 shiny_orange }
  138.    object { cylinder <x3,y3+1,z>,<3*2-6,8,3>,0.05 shiny_orange }
  139.    object { cylinder <x4,y4+1,z>,<4*2-6,8,3>,0.05 shiny_orange }
  140.    object { cylinder <x5,y5+1,z>,<5*2-6,8,3>,0.05 shiny_orange }
  141.  
  142.    define real_dark <0.1,0.1,0.1>
  143.    define onyx texture { metallic { color real_dark } }
  144.  
  145.    object { box <-6,7.9,-2.5>,<6,8.5,-1.5> onyx }
  146.    object { box <-6,7.9, 2.5>,<6,8.5, 1.5> onyx }
  147.  
  148. // make a shiny tabletop
  149.    object {
  150.       polygon 4,<-10,-1.2,-4>,<10,-1.2,-4>,<10,-1.2,4>,<-10,-1.2,4>
  151.       reflective_cyan
  152.    }
  153.  
  154.    static define t t+10
  155.    if (fmod(t,360)==0) static define moving moving+1
  156.